// #include <stdio.h>
// #include <stdlib.h>
// #include <windows.h>
//
// #define MAX_SIZE 100
// #define INSERTSIZE 10
//
// typedef struct {
//     int *elem;      // 存储数据的指针
//     int length;     // 当前元素数量
//     int listsize;   // 当前数组容量
// } SqList;
//
// // 自定义状态类型
// typedef enum {
//     LIST_OK = 1,
//     LIST_ERROR = 0,
//     LIST_OVERFLOW = -2,
//     LIST_NOT_FOUND = -1 // 查找未找到的状态
// } Status;
//
// Status InitList(SqList *L) {
//     L->elem = (int *)malloc(MAX_SIZE * sizeof(int));
//     if (!L->elem) {
//         exit(LIST_OVERFLOW);
//     }
//     L->length = 0;
//     L->listsize = MAX_SIZE;
//     return LIST_OK;
// }
//
// Status InsertElem(SqList *L, int index, int element) {
//     if (index < 0 || index > L->length) {
//         return LIST_ERROR; // 索引越界
//     }
//     if (L->length >= L->listsize) {
//         // 扩展数组
//         int *new_elem = (int *)realloc(L->elem, (L->listsize + INSERTSIZE) * sizeof(int));
//         if (!new_elem) {
//             exit(LIST_OVERFLOW);
//         }
//         L->elem = new_elem;
//         L->listsize += INSERTSIZE;
//     }
//     // 插入元素
//     for (int i = L->length; i > index; i--) {
//         L->elem[i] = L->elem[i - 1]; // 移动元素
//     }
//     L->elem[index] = element;
//     L->length++;
//     return LIST_OK;
// }
//
// Status DeleteElem(SqList *L, int index) {
//     if (index < 0 || index >= L->length) {
//         return LIST_ERROR; // 索引越界
//     }
//     // 删除元素
//     for (int i = index; i < L->length - 1; i++) {
//         L->elem[i] = L->elem[i + 1]; // 移动元素
//     }
//     L->length--;
//     return LIST_OK;
// }
//
// void PrintList(SqList *L) {
//     for (int i = 0; i < L->length; i++) {
//         printf("%d ", L->elem[i]);
//     }
//     printf("\n");
// }
//
// void DestroyList(SqList *L) {
//     free(L->elem);
//     L->elem = NULL; // 避免悬空指针
//     L->length = 0;
//     L->listsize = 0;
// }
//
// // 按值查找元素
// int FindElem(SqList *L, int element) {
//     for (int i = 0; i < L->length; i++) {
//         if (L->elem[i] == element) {
//             return i; // 返回找到的索引
//         }
//     }
//     return LIST_NOT_FOUND; // 未找到元素
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8); // 设置控制台输出为 UTF-8
//
//     SqList L;
//     InitList(&L); // 初始化顺序表
//
//     int element, index;
//
//     // 插入元素
//     while (1) {
//         printf("请输入要插入的元素（输入负数退出）: ");
//         scanf("%d", &element);
//         if (element < 0) break; // 负数退出
//
//         printf("请输入插入位置（0-%d）: ", L.length);
//         scanf("%d", &index);
//
//         if (InsertElem(&L, index, element) == LIST_OK) {
//             printf("插入成功！\n");
//         } else {
//             printf("插入失败，索引越界。\n");
//         }
//     }
//
//     // 输出顺序表
//     printf("顺序表元素: ");
//     PrintList(&L);
//
//     // 查找元素
//     printf("请输入要查找的元素: ");
//     scanf("%d", &element);
//     int foundIndex = FindElem(&L, element);
//     if (foundIndex != LIST_NOT_FOUND) {
//         printf("元素 %d 在索引 %d 处找到。\n", element, foundIndex);
//     } else {
//         printf("元素 %d 未找到。\n", element);
//     }
//
//     // 删除元素
//     printf("请输入要删除的元素的索引: ");
//     scanf("%d", &index);
//     if (DeleteElem(&L, index) == LIST_OK) {
//         printf("删除成功！\n");
//     } else {
//         printf("删除失败，索引越界。\n");
//     }
//
//     // 输出更新后的顺序表
//     printf("更新后的顺序表元素: ");
//     PrintList(&L);
//
//     // 销毁顺序表
//     DestroyList(&L);
//     return 0;
// }
